#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char a[11], b[4],c[17];
int main() {
	while (cin >> a >> b) {
        memset(c,0,sizeof c);
		int i = 0, j = 0, h = 0, r = 0; // h对应str即a下标， r对应substr即b下标
		for (j = 1; j < 11; j++) { // 找str中最大的ASC||值的下标 i
			if (a[i] < a[j]) {
				i = j; 
			}
		}
		for (j = 0; j < 17; j++) { // 把数组a、b的值根据要求赋给c
			if (j <= i || j > i + strlen(b)) { // 如果生成数组下标小于 i; 或substr元素插入完毕, 插入str元素
				c[j] = a[h];
				h++;
				if (h > strlen(a)) { // 若str元素插入完毕，输出数组c结果
					printf("%s\n", c);
					break;
				}
			}
			else { // 否则插入substr元素
				c[j] = b[r];
				r++;
			}
		}
        memset(a,0,sizeof a);
        memset(b,0,sizeof b);
	}
	return 0;
}